package com.ruoyi.system.recovery.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.system.recovery.domain.RecoveryInfo;
import com.ruoyi.system.recovery.domain.bo.RecoveryAuditBo;
import com.ruoyi.system.recovery.domain.bo.RecoveryInfoBo;
import com.ruoyi.system.recovery.domain.bo.RecoveryServiceBo;
import com.ruoyi.system.recovery.domain.param.RecoveryInfoParam;
import com.ruoyi.system.recovery.domain.vo.RecoveryInfoVo;

import java.util.List;

/**
 * 回收账号Service接口
 *
 * @author ruoyi
 * @date 2025-06-04
 */
public interface IRecoveryInfoService extends IService<RecoveryInfo> {

    /**
     * 查询回收账号
     *
     * @param id 回收账号主键
     * @return 回收账号
     */
    public RecoveryInfoVo selectRecoveryInfoById(Long id);

    /**
     * 查询回收账号列表
     *
     * @param recoveryInfo 回收账号
     * @return 回收账号集合
     */
    public List<RecoveryInfoVo> selectRecoveryInfoList(RecoveryInfoParam recoveryInfo);

    /**
     * 新增回收账号
     *
     * @param recoveryInfo 回收账号
     * @return 结果
     */
    public boolean insertRecoveryInfo(RecoveryInfo recoveryInfo);


    /**
     * 修改账号信息
     * @param recoveryInfo
     * @return
     */
    boolean editRecoveryInfo(RecoveryInfo recoveryInfo);

    /**
     * 提交审核
     *
     * @param recoveryInfo 回收账号
     * @return 结果
     */
    public boolean editRecoveryGameInfo(RecoveryInfoBo recoveryInfo);

    /**
     * 批量删除回收账号
     *
     * @param id 需要删除的回收账号主键集合
     * @return 结果
     */
    public boolean deleteRecoveryInfoById(Long id);

    /**
     * 修改回收账号备注
     *
     * @param id     回收账号主键
     * @param remark 备注
     * @return 结果
     */
    public boolean updateRemark(Long id, String remark);

    /**
     * 账号审核通过
     * @param recoveryAuditBo
     * @return
     */
    boolean recoveryApproved(RecoveryAuditBo recoveryAuditBo);

    /**
     * 账号审核拒绝
     * @param recoveryAuditBo
     * @return
     */
    boolean recoveryOverrule(RecoveryAuditBo recoveryAuditBo);

    /**
     * 账号暂卖
     * @param recoveryAuditBo
     * @return
     */
    boolean temporarilySold(RecoveryAuditBo recoveryAuditBo);

    /**
     * 账号暂卖取消
     * @param recoveryAuditBo
     * @return
     */
    boolean temporarilySoldCancel(RecoveryAuditBo recoveryAuditBo);

    /**
     * 修改审核设置
     * @param value
     * @return
     */
    AjaxResult editIsProcess(String value);

    /**
     * 添加售后
     * @param recoveryServiceBo
     * @return
     */
    AjaxResult addServices(RecoveryServiceBo recoveryServiceBo);

    /**
     * 取消订单
     * @param id
     * @return
     */
    AjaxResult cancleRecovery(Long id);
}
